<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      const data = [
        {
          入职日期: 44505,
          姓名: '小张',
          工号: '9002',
          手机号: '13800000252',
          转正日期: 44892,
          部门: '总裁办',
        },
        {
          入职日期: 44506,
          姓名: '小李',
          工号: 9006,
          手机号: '13810000512',
          转正日期: 44893,
          部门: '总裁办',
        },
      ];
      function formatExcelDate(numb, format = '-') {
        const time = new Date(
          (numb - 25567) * 24 * 3600000 - 5 * 60 * 1000 - 43 * 1000 - 24 * 3600000 - 8 * 3600000
        );
        time.setYear(time.getFullYear());
        const year = time.getFullYear() + '';
        const month = time.getMonth() + 1 + '';
        const date = time.getDate() + '';
        if (format && format.length === 1) {
          return year + format + month + format + date;
        }
        return (
          year +
          format +
          (month < 10 ? '0' + month : month) +
          format +
          (date < 10 ? '0' + date : date)
        );
      }

      function transfromZhCNToEn(arr) {
        const mapInfo = {
          入职日期: 'timeOfEntry',
          手机号: 'mobile',
          姓名: 'username',
          转正日期: 'correctionTime',
          工号: 'workNumber',
          部门: 'departmentName',
          聘用形式: 'formOfEmployment',
        };
        // 定义一个需要返回的新数组
        // const newArr = [];

        // 数组遍历的时候，选择什么方法？开始时都不知道的
        return arr.map((item) => {
          // 定义一个新的obj对象, 这个obj就是最后我们要返回的对象
          const obj = {};
          const keysList = Object.keys(item);
          // 现在得到了一个汉字的数组以后，是把数组里面的每一个函数转换为英文
          // ---- 这个时候，写停住了，还需要一个 中文和英文的 映射表
          // console.log(keysList);
          // keysList = ['入职日期', '姓名', '工号', '手机号', '转正日期', '部门']
          keysList.forEach((childItem) => {
            // enKey 每次循环对应的 英文的键 key
            const enKey = mapInfo[childItem]; // childItem = '入职日期'
            // obj.timeOfEntry = item['入职日期'] // item['入职日期'] = 44505
            // 如果是两个excel时间的需要单独处理一下， js的时间是从1970-1-1 excel 起始点不一样
            if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
              obj[enKey] = formatExcelDate(item[childItem]);
            } else {
              obj[enKey] = item[childItem];
            }
          });
          // 将循环得到的每一个对象，添加到新数组里面
          // newArr.push(obj);
          return obj;
        });
        // return newArr;
      }

      console.log(transfromZhCNToEn(data));

      // 需求： 我们上传excel以后，（xlsx插件会给我返回一个对象数组）得到的对象数组里面，对象的key是中文的，
      //       但是我们上传excel的时候， 后端接口需要的是 英文字段
      //
      // result = [
      // {
      //     timeOfEntry:44505,
      //     mobile: "13800000252",
      //     username:"小张",
      //     correctionTime:  44892,
      //     workNumber: "9002",
      //     departmentName:"总裁办"
      // }
      // ]
    </script>
  </body>
</html>
